#include <stdio.h>

//	指针计算不是简单的整数相加
// 如果是一个int *，+1的结果是增加一个int的大小
// 如果是一个char *，+1的结果是增加一个char大小

void my_strcpy(char *dest, char *ch)
{
    int i = 0;
    while (*(ch + i))
    {
        *(dest + i) = *(ch + i);
        i++;
    }
    *(dest + i) = 0;
}

void my_strcpy03(char *dest, char *ch)
{
    while (*ch)
    {
        *dest = *ch;
        dest++; //指针+1  相当于指向数组下一个元素  内存地址变化了sizeof(char)
        ch++;
    }

    *dest = 0;
}

int demo1()
{

    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int *p = &arr[3];
    printf("%p\n", p);
    // p--; //指针的加减运算和指针的类型有关
    // p--;
    // p++;
    //内存地址相差是12 /
    // int step = p - arr;
    // printf("%d\n", step);
    //指针操作数组时下标允许是负数
    printf("%d\n", p[-2]); //*(p-2);
    // printf("%p\n", p);
    // printf("%p\n", arr);
    return 0;
}
int main()
{
    //字符串拷贝
    char ch[] = "hello world";
    char dest[100];

    my_strcpy03(dest, ch);
    // printf("%s\n", dest);
    demo1();
    return 0;
}